/**
* Copyright (C) 2013-2015
*
* @file   S_2_Curtain_doGet.c
*
* @remark
*
*/

#include "S_2_Curtain_doGet.h"
#include "iid.h"

#include "gwin_global_config.h"


/**
 * 格式: property_value_new_ulong(整数)　
 * 取值: 最小值: 0, 最大值: 100, 步长: 1
 */
static void P_2_2_CurrentPosition_doGet(property_operation_t *o)
{
    uint32_t value = gwin_get_current_position();
    o->value = property_value_new_ulong(value); // TODO: 这里需要读到属性真正的值
}

/**
 * 格式: property_value_new_ulong(整数)　
 * 取值: 最小值: 0, 最大值: 100, 步长: 1
 */
static void P_2_3_TargetPosition_doGet(property_operation_t *o)
{
    uint32_t value = gwin_get_target_position();
    o->value = property_value_new_ulong(value); // TODO: 这里需要读到属性真正的值
}

/**
 * 格式: property_value_new_boolean(1 或 0)　
 * 取值: 1 或　0
 */
static void P_2_4_MotorReverse_doGet(property_operation_t *o)
{
    uint32_t value = gwin_get_direction();
    o->value = property_value_new_boolean(value); // TODO: 这里需要读到属性真正的值
}

/**
 * 格式: property_value_new_ulong(整数)　
 * 取值: 0(Low), 1(Medium), 2(Medium)
 */
static void P_2_5_SpeedLevel_doGet(property_operation_t *o)
{
    uint32_t value = gwin_get_speed_level();
    o->value = property_value_new_ulong(value); // TODO: 这里需要读到属性真正的值
}

void S_2_Curtain_doGet(property_operation_t *o)
{
    switch (o->piid)
    {
        case IID_2_2_CurrentPosition:
            P_2_2_CurrentPosition_doGet(o);
            break;

        case IID_2_3_TargetPosition:
            P_2_3_TargetPosition_doGet(o);
            break;

        case IID_2_4_MotorReverse:
            P_2_4_MotorReverse_doGet(o);
            break;

        case IID_2_5_SpeedLevel:
            P_2_5_SpeedLevel_doGet(o);
            break;

        default:
            o->code = OPERATION_ERROR_CANNOT_READ;
            break;
    }
}
